Recette n 51 Gestion des fichiers
Page 151



private class FileUploadTask extends AsyncTask<Void, Void, Exception> 
{
   private String bucketName = null;
   private String fileName = null;
   private File file = null;

   public FileUploadTask (String bucketName, String fileName, File file)
   {
      this.bucketName = bucketName;
      this.fileName = fileName;
      this.file = file;
   }

   @Override
   protected Exception doInBackground(Void... params)
   {
      try
      {
         // Contruction de la demande
         // on peut rajouter des paramtre ACL et des metadata dans le cas de stream
         PutObjectRequest por = new PutObjectRequest(bucketName, fileName, file);
         // Envoi du fichier
         s3Client.putObject(por);
      }
      catch (Exception e)
      {
         // Exceptions possibles : AmazonClientException et AmazonServiceException
         Log.d("AWS", "Erreur d'envoi : " + e.getMessage());
         return e;
   }

      return null;
   }

   @Override
   protected void onPostExecute(Exception result)
   {
      super.onPostExecute(result);

      if (result != null)
      {
         // message utilisateur
         new AlertDialog.Builder(MainActivity.this)
            .setTitle("Erreur d'envoi")
            .setMessage(result.getMessage())
            .show();
      }
      else
      {
         // message utilisateur
         new AlertDialog.Builder(MainActivity.this)
            .setTitle("Envoi termin")
            .setMessage("Le fichier a t envoy avec succs.")
            .show();
      }
   }
}






private class RetreiveBucketContentTask extends AsyncTask<Void, Void, List<S3ObjectSummary>>
{
   @Override
   protected List<S3ObjectSummary> doInBackground(Void... params)
   {
      try
      {
         /*
          * bucketName - The name of the bucket whose objects are to be listed.
          * prefix - The prefix restricting what keys will be listed.
          * marker - The key marker indicating where listing results should begin.
          * delimiter - The delimiter for condensing common prefixes in the returned listing results.
          * maxKeys - The maximum number of results to return.
          */
         ListObjectsRequest lor = new ListObjectsRequest();
         lor.setBucketName(BUCKET_NAME);

         ObjectListing ol = s3Client.listObjects(lor);
         if (!ol.isTruncated())
         {
            List<S3ObjectSummary> objectSummaries = ol.getObjectSummaries();
            return objectSummaries;
         }
      }
      catch (Exception e)
      {
         // Exceptions possibles : AmazonClientException et AmazonServiceException
         Log.d("AWS", "Erreur liste : " + e.toString());
         return null;
      }
      return null;
   }

   @Override
   protected void onPostExecute(List<S3ObjectSummary> result)
   {
      super.onPostExecute(result);
      tvResult.setText("Liste des lments du bucket :\n\n");
      for (S3ObjectSummary objectSummary : result)
      {
         tvResult.setText(tvResult.getText() + objectSummary.getKey() + "\n");
      }

      ProgressBar bar = (ProgressBar) findViewById(R.id.progressBar1);
      bar.setVisibility(ProgressBar.GONE);
   }

}






private class FileDeleteTask extends AsyncTask<Void, Void, Exception> 
{
   private String bucketName = null;
   private String fileName = null;
   private File file = null;

   public FileDeleteTask (String bucketName, String fileName)
   {
      this.bucketName = bucketName;
      this.fileName = fileName;
   }

   @Override
   protected Exception doInBackground(Void... params)
   {
      try
      {
         // Contruction de la demande
         DeleteObjectRequest dor = new DeleteObjectRequest(bucketName, fileName);
         // Envoi du fichier
         s3Client.deleteObject(dor);
      }
      catch (Exception e)
      {
         // Exceptions possibles : AmazonClientException et AmazonServiceException
         Log.d("AWS", "Erreur de suppression : " + e.getMessage());
         return e;
      }
      return null;
   }

   @Override
   protected void onPostExecute(Exception result) {
      super.onPostExecute(result);

      if (result != null)
      {
         // message utilisateur
         new AlertDialog.Builder(MainActivity.this)
            .setTitle("Erreur de suppression")
            .setMessage(result.getMessage())
            .show();
      }
      else
      {
         // message utilisateur
         new AlertDialog.Builder(MainActivity.this)
            .setTitle("Suppression termine")
            .setMessage("Le fichier a t supprim avec succs.")
            .show();
      }
   }
}
